ORM继承一般有三种模式:

  • JOINED:父类和子类各自使用自己的表,当取子类时需要同时连接父类表,此为Django的默认模式;
  • TABLE_PER_CLASS:子类表中包含父类表中的字段,此模式有字段冗余;
  • SINGLE_TABLE:子类和父类共用一张表,表里包含所有的字段;

JOINED

Django默认模式,无需设置;

  • 从父类建立子类的方法
# salespropsvalue为父类的对象
itemsalespropvalue = ProductSalesPropValue()
itemsalespropvalue.__dict__ = salespropsvalue.__dict__.copy()
itemsalespropvalue.product_id = item_id
itemsalespropvalue.save()

TABLE_PER_CLASS

将父类Meta的abstract设置为True,即可实现

SINGLE_TABLE

将父类Meta的abstract设置为True,并且将子类的表名指定为与父类一样,即可实现

限制和问题

  • 字段不允许覆盖,子类不能与父类有同名属性

相关内容

· Django ORM 继承

[ 编辑 | 历史 ]
最近由“jilili”在“2016-05-30 08:49:28”修改